import dayjs from "dayjs";
import connection from "../mysql/connection.js";

export const getTips = () => {
  return new Promise((resolve, reject) => {
    connection.query("SELECT * FROM tip", (err, result) => {
      if (err) {
        reject(err);
      } else {
        resolve(result);
      }
    });
  });
};

export const getExpiryTips = async () => {
  return new Promise((resolve, reject) => {
    connection.query(
      "SELECT *  FROM tip WHERE expiry_date>NOW()",
      (err, result) => {
        if (err) {
          reject(err);
        } else {
          resolve(result);
        }
      }
    );
  });
};

export const getEffectiveTips = (userId) => {
  const sql = `
        SELECT t.* 
        FROM tip t
            LEFT JOIN (
                SELECT tip_id, COUNT( * ) AS execution_count 
                FROM user_tip_task 
                WHERE user_id = "${userId}"
                GROUP BY tip_id 
            ) utt ON t.id = utt.tip_id 
        WHERE
            t.expiry_date > NOW ( ) 
            AND (
                utt.execution_count IS NULL 
                OR utt.execution_count < t.show_num 
            );
    `;
  return new Promise((resolve, reject) => {
    connection.query(sql, (err, result) => {
        if (err) {
          reject(err);
        } else {
          resolve(result);
        }
      }
    );
  });
};

// SELECT t.*
// FROM tip AS t
// LEFT JOIN (
// SELECT COUNT(*)
// FROM user_tip_task AS utt
// WHERE user_id = "qwrlb3em22kk3"
// ) utt ON t.id = utt.tip_id
// WHERE t.expiration_date > CURRENT_DATE() -- 假设你想获取当前日期之后没有过期的tip
//   AND utt.tip_id IS NULL; -- 只选择那些在user_tip_task中没有达到执行次数限制的tip

// 我有一个tip表，表里有如下字段id、expiry_date、show_num、content。
// 我还有另一个表user_tip_task，表里有如下字段user_id、tip_id。
// 我想查询出user_id为123的用户下的有效tip，有效tip标准为tip的expiry_date字段大于当前日期，并且user_tip_task表中没有达到执行次数限制的tip 即小于tip的show_num。
// 请帮我写一条sql语句。
